/*
 * Utiles_Importar.java
 *
 * Created on 22 de enero de 2008, 10:52
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package helper;
import java.util.*;
import jxl.*;
import java.io.*;
/**
 *
 * @author EPS
 */
public class Utiles_Importar {
    
    /** Creates a new instance of Utiles_Importar */
    //Constructor 1
    public Utiles_Importar( File f, int hoja, int ncols, int nfilas ) {
        this.arch = f;        
        this.hoja = hoja;
        this.ncols = ncols;
        this.nfilas = nfilas;
    }             
    
    //Constructor 2
    public Utiles_Importar( File f ){
        this.arch = f;
        this.ncols = -1;    //Damos valores predeterminados
        this.nfilas = -1;
    }
    
    //Este m�todo se utiliza con el constructor 1
    public ArrayList getDatos(){
        ArrayList arrTemp = null;
        ArrayList filaTemp = null;
        
        arrTemp = new ArrayList( 1 );
        Workbook wb = null;
        Sheet sh = null;
        Cell cel = null;
        
        try{
            wb = Workbook.getWorkbook( arch );            
        }catch( Exception er ){
            //er.printStackTrace();
            Utiles_MensajesDialogo.mensajeError( "Error al leer el archivo" );
        }
        
        sh = wb.getSheet( this.hoja );
                
        for( int i = 1; i < nfilas; i++ ){
            filaTemp = new ArrayList( 1 );
            for( int j = 0; j < ncols; j++ ){
                cel = sh.getCell( j, i );                
                filaTemp.add( cel.getContents() );
            }
            arrTemp.add( filaTemp );            
        }
        
        identificadores = new ArrayList( 1 );
        clases = new ArrayList( 1 );
        
        for( int i = 0; i < ncols; i++ ){
            cel = sh.getCell( i, 0 );
            identificadores.add( cel.getContents() );
            try{
                clases.add( Class.forName( "java.lang.String" ) );
            }catch( Exception er ){
                //er.printStackTrace();
            }
        }                
        return arrTemp;        
    }   
    
    
    public ArrayList getDatosHoja( int sheet ){
        ArrayList arrTemp = null;
        ArrayList filaTemp = null;        
        
        arrTemp = new ArrayList( 1 );
        Workbook wb = null;
        Sheet sh = null;
        Cell cel = null;
        
        try{
            wb = Workbook.getWorkbook( arch );            
        }catch( Exception er ){
            //er.printStackTrace();
            Utiles_MensajesDialogo.mensajeError( "Error al leer el archivo" );
        }        
        sh = wb.getSheet( sheet );
        
        //System.out.println( "Antes de la comparaci�n\nN� filas-->" + this.nfilas + " N� Columnas-->" + this.ncols );
        
        if( this.nfilas == -1 ){    //Cuando no haya ingresado la cantidad de filas
            this.nfilas = sh.getRows(); //Obtengo n�mero de filas
        }
        
        if( this.ncols == -1 ){     //Cuando no haya ingresado la cantidad de columnas            
            this.ncols = sh.getColumns(); //Obtengo n�mero de columnas
        }
                       
        for( int i = 1; i < nfilas; i++ ){
            filaTemp = new ArrayList( 1 );
            for( int j = 0; j < ncols; j++ ){
                cel = sh.getCell( j, i );                
                filaTemp.add( cel.getContents() );
                //System.out.println( cel.getCellFormat().getFormat().getFormatString() );
            }
            arrTemp.add( filaTemp );            
        }
                
        //Estableciendo las clases( Por defecto las he puesto como String ) y los valores de las cabeceras
        identificadores = new ArrayList( 1 );
        clases = new ArrayList( 1 );        
        
        for( int i = 0; i < ncols; i++ ){
            cel = sh.getCell( i, 0 );
            identificadores.add( cel.getContents() );
            try{
                clases.add( Class.forName( "java.lang.String" ) );
            }catch( Exception er ){
                //er.printStackTrace();
            }
        }        
        return arrTemp;
    }            
       
    public ArrayList getIdentificadores(){
        return this.identificadores;
    }
    
    public ArrayList getClases(){
        return this.clases;
    }
    
    public ArrayList getDatosInfo(){
        return this.datos;
    }    
    
    public int getHoja() {
        return hoja;
    }
    
    public void setNumFilas( int fil ){
        this.nfilas = fil;
    }
    
    public int getNumFilas(  ){
        return this.nfilas ;
    }
    
    public void setNumColumnas( int col ){
        this.ncols = col;
    }
    
    public void setNumHoja( int hoja ){
        this.hoja = hoja;
    }
     
    
    public static void main( String[] args ){        
    }
    
    private File arch;    
    private int hoja;
    private int ncols;
    private int nfilas;
    
    private ArrayList identificadores;
    private ArrayList clases;
    private ArrayList datos;   
    
}
